/*
 * PruebaMySQL.java
 *
 * Programa de prueba para conexión a una base de datos de MySQL.
 * Presupone que el servidor de base de datos está arrancado, disponible,
 * en el puerto por defecto.
 * El usuario y password de conexión con la base de datos debe cambiarse.
 * En la base de datos se supone que hay una base de datos llamada prueba y que
 * tiene una tabla persona con tres campos, de esta manera:
 * mysql> create database prueba;
 * mysql> use prueba;
 * mysql> create table persona (id smallint auto_increment, nombre varchar(60), 
 *      nacimiento date, primary key(id)); 
 */
package org.turistmontoro;

import com.google.gson.Gson;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.imageio.ImageIO;

/**
 * Clase de prueba de conexión con una base de datos MySQL
 */
//public class Consultas implements Job {
public class Consultas {

    private Connection conexion;
    private Statement s;
    private ArrayList<Oferta> datos;
    private String DELETE_OFFER = "DELETE FROM ofertas WHERE fechaFin<?";
    private PreparedStatement preparedStatement = null;
//    private ArrayList<ListaEntrada> allDatos;

    /**
     * Crea una instancia de la clase MySQL y realiza todo el código de
     * conexión, consulta y muestra de resultados.
     */
    public Consultas() {

        datos = new ArrayList<>();
//        allDatos = new ArrayList<ListaEntrada>();
        // Se mete todo en un try por los posibles errores de MySQL
        try {
            // Se registra el Driver de MySQL
            DriverManager.registerDriver(new org.gjt.mm.mysql.Driver());

            // Se obtiene una conexión con la base de datos. Hay que
            // cambiar el usuario "root" y la clave "la_clave" por las
            // adecuadas a la base de datos que estemos usando.
            conexion = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/webappmontturismo", "root", "root");

        } catch (Exception e) {
        }
    }

    public void deleteOfferPassed() {


        Date date = new Date();

        try {
            // Se crea un Statement, para realizar la consulta
            s = conexion.createStatement();
            preparedStatement = conexion.prepareStatement(DELETE_OFFER);
            preparedStatement.setDate(1, new java.sql.Date(date.getTime()));
            preparedStatement.execute();
        } catch (SQLException ex) {
            Logger.getLogger(Consultas.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void getOfertaElGordo() {


        Gson gson = new Gson();
        ResultSet rs;
        try {


            // Se realiza la consulta para obtener los bares. 
            datos.clear();
            rs = s.executeQuery("select * from ofertas where usuario='elgordo'");
            java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("dd/MM/yyyy");
            BufferedImage buffimg = null;
            while (rs.next()) {
                String fechaFin = sdf.format(rs.getDate("fechaFin"));
                InputStream img = rs.getBinaryStream("imagen"); // reading image as InputStream
                buffimg = ImageIO.read(img); // decoding the inputstream as BufferedImage
                String imagen = ImagenConverter.encodeToString(buffimg, "jpeg");
                datos.add(new Oferta(rs.getInt("id"), rs.getString("usuario"), rs.getString("descripcion"), rs.getString("titulo"), fechaFin, ""));
            }
            MontoroTWebService.ofertasElGordo = gson.toJson(datos);

            // Se cierra la conexión con la base de datos.
//            conexion.close();
        } catch (SQLException ex) {
            Logger.getLogger(Consultas.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(Consultas.class.getName()).log(Level.SEVERE, null, ex);
        }


    }
//
//    @Override
//    public void execute(JobExecutionContext jec) throws JobExecutionException {
//        doConsulta();
//    }
}